HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux WebLive 5.15.0-79-generic #86-Ubuntu SMP Mon Jul 10 16:07:21 UTC 2023 x86_64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/html/wpmuhibbah/wp-content/plugins/woocommerce-checkout-manager/lib/model/class-model.php
<?php

namespace QuadLayers\WOOCCM\Model;

/**
 * Model Class
 */
class Model {

	protected $table = '';
	private $cache   = array();


	protected function get_args() {
		return array();
	}

	protected function get_next_id() {
		$items = $this->get_items();

		if ( count( $items ) ) {
			return max( array_keys( $items ) ) + 1;
		}

		return 0;
	}

	// Singular
	protected function add_item( $item_data ) {
		$id              = $this->get_next_id();
		$item_data['id'] = $id;

		$items = $this->get_items();

		$items[ $id ] = $item_data;

		return $this->save_items( $items );
	}

	protected function get_item( $id = null ) {
		$items = $this->get_items();

		if ( isset( $items[ $id ] ) ) {
			return $items[ $id ];
		}
	}

	protected function update_item( $item_data = null ) {
		if ( ! isset( $item_data['id'] ) ) {
			return false;
		}

		$items = $this->get_items();

		if ( ! isset( $items[ $item_data['id'] ] ) ) {
			return false;
		}

		$current_data = $items[ $item_data['id'] ];
		/**
		 * Get saved data to prevent missing fields [required, order, clear, disabled]
		 */
		// TODO: 6.1.3
		// $items[ $item_data['id'] ] = array_replace_recursive( (array) $current_data, $item_data );
		$items[ $item_data['id'] ] = array_merge( (array) $current_data, $item_data );

		return $this->save_items( $items );
	}

	protected function delete_item( $id = null ) {
		$items = $this->get_items();
		if ( $items ) {
			if ( count( $items ) > 0 ) {
				unset( $items[ $id ] );
				return $this->save( $items );
			}
		}
	}

	// Plural
	protected function get_items() {
		$items = $this->get();

		// make sure each item has all values
		if ( is_array( $items ) ) {
			if ( count( $items ) ) {
				foreach ( $items as $id => $item ) {
					// $items[ $id ] = array_replace_recursive( $this->get_args(), $item );
					$items[ $id ] = $item + $this->get_args();
				}
				return $items;
			}
		}

		return array();
	}

	protected function save_items( $items ) {

		if ( is_array( $items ) ) {

			foreach ( $items as $id => $item ) {

				if ( ! isset( $item['id'] ) ) {
					unset( $items[ $id ] );
				}
				// $items[ $id ] = array_replace_recursive( $this->get_args(), $item );
				$items[ $id ] = $item + $this->get_args();
			}

			return $this->save( $items );
		}
	}

	// Core
	protected function save( $data = null ) {
		if ( ! $this->table ) {
			error_log( 'Model can\'t be accesed directly' );
			die();
		}

		$this->cache[ $this->table ] = $data;

		return update_option( $this->table, $data );
	}

	protected function get() {
		if ( ! $this->table ) {
			error_log( 'Model can\'t be accesed directly' );
			die();
		}

		if ( ! isset( $this->cache[ $this->table ] ) ) {
			$this->cache[ $this->table ] = get_option( $this->table, $this->get_defaults() );

		}

		return $this->cache[ $this->table ];
	}

	protected function delete() {
		delete_option( $this->table );
		// update_option($this->table, $this->get_defaults());
	}
}